Child's Bedroom

When creating this scene, I was inspired by the bright, saturated colours of Pixar’s productions.

I used Blender’s cloth simulation functionality to create the tent, curtains, cushions, patchwork quilt and bedding, the fairy lights, slinky and floorboards were made using Blender’s geometry nodes. I used hair particle systems for the rug, dog stuffed toy and the knitted footstool in the tent. All other models were made using standard modelling techniques.

I used a combination of Substance Painter, Substance Designer and Blender’s shader nodes to texture the models in the scene. All wood was textured by creating a shader that simulates the ring structure of real wood. For the Tardis poster, I rendered a simple scene containing the Tardis, a basic landscape, clouds and the energy ribbons (which were created using geometry nodes), I then used Blender’s compositor to colour the render and add stars, the planet and sun.

The volumetric fog ‘god rays’ and dust particles were both rendered in separate passes, using Cycles for the static images and Eevee for the animation, then added into the final composition using Blender’s compositor. This gave me maximum control over the final look, and using Eevee for these parts of the animation allowed me to keep render times in check. All other elements were rendered using Cycles.

To denoise the renders, I used the Open Image Denoise node in the compositor on the diffuse, glossy, transmission and volume passes then recombined them. For the still images, I rendered at 200% resolution to give the denoiser more data to work with, then I rescaled using Gimp after finishing the compositing process. For the animation, rendering at double resolution would have meant much longer render times and so I opted to skip this step.

Despite using multi pass denoising, the animation showed considerable temporal instability and so, once again using Blender’s compositor, I created a temporal median filter to calculate the median of the current frame, the two previous frames and the two frames after (using the vector pass to warp the frames before and after to match up with the current one). I initially tried this approach using only three frames, but the result was still too temporally unstable. I chose to use a median filter rather than an average as the latter produced too much ghosting.